#include "mainwindow.h"
#include "ui_mainwindow.h"

// 搜索模块
void MainWindow::dorweMessageList_search()
{
    QLabel *MessageList_Search = new QLabel(this);
    MessageList_Search->setGeometry(57, 0, QT_MESSAGELIST_WIDTH, QT_MESSAGELIST_SEARCH_HEIGHT);
    MessageList_Search->setStyleSheet("background-image: url(../weChat/images/searchIMG.png);");
}
// 消息模块列表盒子
void MainWindow::dorweMessageList_Box()
{
    addMessageListDatas();
    listWidget = new QListWidget(this);
    listWidget->setGeometry(57, 62, QT_MESSAGELIST_WIDTH + 1, QT_HEIGHT - QT_MESSAGELIST_SEARCH_HEIGHT);
    listWidget->setStyleSheet("border-left: 0px;border-top: 0px;border-bottom: 0px;border-right: 1px solid #e9e9e9;background-color: #e9e8e8;");
    for (size_t i = 0; i < messageListDatas.size(); i++)
    {
        dorweMessageList_item(i, listWidget);
    }
    // 给listWidget绑定点击事件
    QObject::connect(listWidget, &QListWidget::itemClicked, this, &MainWindow::dorweMessageList_item_click);
}

void MainWindow::dorweMessageList_item_click(QListWidgetItem *item) {
    MessageListActiveIndex = item->data(Qt::UserRole).toInt();
    
    chatWindow_title = messageListDatas[MessageListActiveIndex].isGroup ? messageListDatas[MessageListActiveIndex].groupName : messageListDatas[MessageListActiveIndex].userName;
    qDebug() << chatWindow_title;
    // 绘制聊天窗口
    dorweChatWindow_title();
    dorweChatWindow_window();
    dorweChatWindow_tool();
    dorweChatWindow_input();
    dorweChatWindow_sendBtn();
    // 更新QListWidget的试图
    for (int i = 0; i < listWidget->count(); ++i)
    {
        QListWidgetItem *currentItem = listWidget->item(i);
        QWidget *widget = listWidget->itemWidget(currentItem);
        if (i == MessageListActiveIndex)
        {
            widget->setStyleSheet("background-color: #c4c4c4;");
        }
        else
        {
            widget->setStyleSheet("*:hover { background-color: #d8d8d8; }");
        }
    }
};
// 消息模块子项
void MainWindow::dorweMessageList_item(int i, QListWidget *listWidget)
{
    // 创建 QListWidgetItem
    QListWidgetItem *item = new QListWidgetItem(listWidget);
    item->setData(Qt::UserRole, i);
    item->setSizeHint(QSize(225, 65)); // 设置 Item 大小
    // 创建自定义 QWidget
    QWidget *widget = new QWidget;
    if (i == MessageListActiveIndex)
    {
        // 设置样式
        widget->setStyleSheet("background-color: #c4c4c4;");
    }
    else
    {
        // 设置鼠标移入背景色
        widget->setStyleSheet("*:hover { background-color: #d8d8d8; }");
    }

    // 头像
    QLabel *headImgLabel = new QLabel(widget);
    headImgLabel->setFixedSize(40, 40);
    QString headImgPath;
    if (messageListDatas[i].isGroup)
    {
        headImgPath = QString("background-image: url(../weChat/images/groupHeadImg.png); border-radius: 0px;");
    }
    else
    {
        headImgPath = QString("background-image: url(../weChat/images/head%1.png); border-radius: 0px;").arg(i + 1);
    }
    headImgLabel->setStyleSheet(headImgPath);
    // 好友名称
    QString name = messageListDatas[i].isGroup ? messageListDatas[i].groupName : messageListDatas[i].userName;
    QLabel *nameLabel = new QLabel(name, widget);
    nameLabel->setStyleSheet("color: #333333; font-size: 14px;line-height: 20px;margin-top: 10px;background-color: transparent;border-right: 0px;"); // 设置名称样式

    // 聊天文本
    QLabel *textLabel = new QLabel(messageListDatas[i].message, widget);
    textLabel->setStyleSheet("color: #999999; font-size: 12px;line-height: 20px;margin-bottom: 10px;background-color: transparent;border-right: 0px;"); // 设置文本样式

    // 使用水平布局排列头像和右侧内容
    QHBoxLayout *hLayout = new QHBoxLayout(widget);
    hLayout->addWidget(headImgLabel); // 添加头像
    hLayout->setSpacing(10);          // 设置头像与右侧内容的间隔

    // 使用垂直布局排列好友名称和聊天文本
    QVBoxLayout *vLayout = new QVBoxLayout();
    vLayout->addWidget(nameLabel);           // 添加好友名称
    vLayout->addWidget(textLabel);           // 添加聊天文本
    vLayout->setSpacing(3);                  // 设置名称与文本的间隔
    vLayout->setContentsMargins(0, 0, 0, 0); // 去除默认边距

    // 将垂直布局添加到水平布局中
    hLayout->addLayout(vLayout);
    hLayout->setContentsMargins(5, 5, 5, 5); // 设置整体边距

    // 设置布局
    widget->setLayout(hLayout);

    // 将 QWidget 绑定到 QListWidgetItem
    listWidget->setItemWidget(item, widget);
};
void MainWindow::addMessageListDatas()
{
    messageListDatas.emplace_back(
        1,              // url: 消息URL
        10,             // total: 消息总数
        1,              // isActive: 消息是否激活（1表示激活，0表示未激活）
        0,              // isGroup: 是否为群组消息（1表示是，0表示否）
        1001,           // Id: 消息ID
        0,              // isGroupMessage: 是否为群组消息（1表示是，0表示否）
        1,              // isRead: 消息是否已读（1表示已读，0表示未读）
        0,              // groupId: 群组ID
        1,              // userId: 用户ID
        "",             // groupName: 群组名称
        "小帅",         // userName: 用户名
        "你好，你真帅", // message: 消息内容
        time(nullptr)   // timestamp: 消息时间戳（当前时间）
    );
    messageListDatas.emplace_back(
        1,                  // url: 消息URL
        10,                 // total: 消息总数
        1,                  // isActive: 消息是否激活（1表示激活，0表示未激活）
        1,                  // isGroup: 是否为群组消息（1表示是，0表示否）
        1001,               // Id: 消息ID
        0,                  // isGroupMessage: 是否为群组消息（1表示是，0表示否）
        1,                  // isRead: 消息是否已读（1表示已读，0表示未读）
        10086,              // groupId: 群组ID
        0,                  // userId: 用户ID
        "2501班级群",       // groupName: 群组名称
        "",                 // userName: 用户名
        "大家要好好学习啊", // message: 消息内容
        time(nullptr)       // timestamp: 消息时间戳（当前时间）
    );
}
void MainWindow::dorweMessageList()
{
    dorweMessageList_search();
    dorweMessageList_Box();
}
